home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 43
/
Amiga Format CD43 (1999)(Future Publishing)(GB)(Track 1 of 2)[!][issue 1999-09].iso
/
-serious-
/
comms
/
other
/
ambos-cgi
/
ambos-cgi.doc
next >
Wrap
Text File
|
1999-06-14
|
10KB
|
306 lines
.--------------------.
| AmBoS-CGI-Demo 1.0 |
`--------------------'
Mit dieser Demo kann ein erster Eindruck vermittelt werden,
was mit dem AmBoS-CGI gemacht werden kann. Die CGI-Scripte
können benutzt werden, um sich den Boxinhalt anzusehen, Nach-
richten zu lesen oder Dateien zu übertragen.
Die Scripte für Upload und Senden einer Nachricht sind noch
nicht fertig.
Getestet wurde nur mitr AWS.
Was ist CGI (Common Gateway Interface)
--------------------------------------
CGI ist eine Schnittstelle, welche von den meisten HTTP-Demons
unterstützt wird.
Ob es sich bei einer Anforderung durch den Clienten um ein File
oder um CGI-Scripe handelt, wird über die Anforderung durch den
Demon entschieden. Habe ich z.B. in AWS:conf/aws folgende Zeile
map /cgi-bin/ cgi aws:cgi-bin/
und der Client fordert
http://www.hier.de/cgi-bin/jau
so entscheidet der Demon, daß für diese Anforderung das
CGI-Script "jau" im Verzeichnis "aws:cgi-bin" zuständig ist.
Bei
http://www.hier.de/cgi-bin/jau/Nu_mach_mal_was
passiert genau dasselbe, das Script hat dann die Möglichkeit, den
angehängten String "Nu_mach_mal_was" auszuwerten und mit etwas
Glück tatsächlich etwas zu machen ;-)
Das ganze als Bispiel, wie es funktioniert...
Installation
------------
* Das Programm cgi-bin/AmBoS-WWW in das cgi Verzeichnis des Demoms
kopieren.
* Das Verzeichnis html/CGIGIF in das Hauptverzeichnis für die WWW-Seiten
kopieren. Bei AWS wird dieses Verzeichnis z.B. mit dem Configeintrag
map / directory aws:html/ festgelegt.
* Das Verzeichnis AmBoS-CGI-Pre in PROGDIR: des CGI-Scriptes legen,
das ist bei AWS "AWS:".
* Nun muß die eigene Hompage noch um eine Möglichkeit erweitert
werden, das CGI-Script aufzurufen.
Also eine Referenz wie HREF=/cgi-bin/AmBoS-WWW/
Es sei noch vorsorglich erwähnt, das man natürlich mit einem "Open
local" eines Browsers das Programm nicht verwenden kann, da ja in
diesem Fall kein HTTP-Demon benutzt wird.
Die .pre Dateien
----------------
Um das Erscheinungsbild der angezeigten WWW-Seiten möglichst frei
zu halten, wird die Seite aus kleinen Bausteinen zusammengestzt, die
jeder so abfassen kann, wie er Lust hat.
Zu diesem Zweck ist jede Seite in 5 Teile zerlegt
.--------------------------.
1. | Kopf |
+--------------------------+
2. | Inhalt |
+--------------------------+
3. | Übergang zwischen Inhalt |
| und Bedienerfeld |
+--------------------------+
4. | Bedienerfeld |
+--------------------------+
5. | Footer |
`--------------------------'
Zur Zeit gibt es drei Gruppen von .pre Dateien:
BRETT_#?.pre für die Darstellung von Brettlisten
FILE_#?.pre für die Darstellung von Filelisten
NEWS_#?.pre für die Darstellung von News
Für 1. : BRETT_HEADER.pre , FILE_HEADER.pre , NEWS_HEADER.pre
Für 3. : BRETT_GADSTART.pre, FILE_GADSTART.pre, NEWS_GADSTART.pre
Für 5. : BRETT_FOOTER.pre , FILE_FOOTER.pre , NEWS_FOOTER.pre
Für 2. wird es noch etwas umfangreicher, weil hier einige Fälle
unterschieden werden müssn
BRETT_BRETT.pre -> Einzelnes Brett
* BRETT_BRETTNEW.pre -> Einzelnes Brett, in dem etwas neues zu
finden ist (Bezugsdatum)
FILE_ASC.pre -> Einzelne Textnachricht
* FILE_ASCNEW.pre -> Einzelne Textnachricht, die neu ist
(Bezugsdatum)
FILE_FILE.pre -> Einzelnes File
* FILE_FILENEW.pre -> Einzelnes File, das neu ist
(Bezugsdatum)
FILE_EXT.pre -> Zur Darstellung einer Zeile
einer mehrzeiligen Beschreibung
bei Files
* FILE_EXTNEW.pre -> Wie oben, nur halt für nach
Bezugsdatum neue Files.
Für 4. sind noch mehr .pre-Dateien zuständig, da in 4. eine
Bedienerleiste aufgebaut werden soll, mit der man das ganze steuert.
BRETT_ROOT.pre -> Zur Hauptebene
BRETT_PARENT.pre -> Eine Ebene zurück
FILE_PARENT.pre -> Eine Ebene zurück zur Brettliste
* FILE_SEND.pre -> In ein Brett senden
FILE_BACK.pre -> In der FileListe eine Seite zurück
FILE_NEXT.pre -> In der FileListe eine Seite weiter
FILE_ROOT.pre -> Zur Hauptebene
* FILE_UPLOAD.pre -> File uploaden
NEWS_PARENT.pre -> Zurück zumm Brettinhalt
NEWS_ROOT.pre -> Zur Hauptebene
NEWS_BACK.pre -> Eine Nachricht zurück
NEWS_NEXT.pre -> Eine Nachricht weiter
* NEWS_REPLY.pre -> Nachricht beantworten
Alle mit einem * gekennzeichneten .pre Files werden noch nicht
benutzt, da die entsprechenden Funktionen noch nicht fertig sind.
Damit die .pre-Dateien nicht immer von der Platte geladen werden
müssen, kann man sie zusätzlich in das RAM: kopieren. Die .pre
Files werden zuerst in "RAM:AmBoS-CGI-Pre" gesucht, wenn sie dort
nicht zu finden sind, wird in "PROGDIR:AmBoS-CGI-Pre" gesucht.
Aufbau einer .pre-Datei
-----------------------
Der Inhalt der .pre Dateien wird in die WWW-Seite an entsprechender
Stelle eingebaut, in den .pre-Dateien können Steuersequenzen
verwendet werden, die dann durch passenden Strings ersetzt werden.
Im Moment gibt es folgende Steuersequenzen
$B BrettName (Nur bei Brettern)
$D Datum
$F FileName (Nur bei Files)
$K Betreff (nur bei News und Files)
$L Länge (nur bei News und Files)
$R Referenz
$U Uploader (nur bei News und Files)
$P der aktuelle Pfad
$V AmBoS-CGI-Version
Beispiel:
In BRETT_BRETT.pre steht
<LI><A HREF=$R>$B-24.24</A> $D
daraus wird z.B.
<LI><A HREF=AmBoS-Net/>AmBoS-Net </A> Heute 09:40:00
$R, $B und $D wurden durch entsprechende Strings ersetzt.
Wenden wir uns nun der seltsamen Zeichenfolge nach $B zu, hierbei
handelt es sich um ein Fragment einer C-Stringformatierung.
Syntax [flags][min.max]
flags - Da gibt es nur '-' für linksbündig, läßt man das '-'
weg wird der Text rechtbündig ausgegeben.
min - Minimale Länge der entstehenden Zeichenkette.
Ist der String (in unserem Bsp. "AmBoS-Net")
kürzer als diese Angabe, so wird er bis zu
angegebenen Länge mit Leerzeichen aufgefüllt.
max - Maximale länge der entstehenden Zeichenkette.
Ist der String länger als diese Angabe, wird
er gekürzt.
Diese Formatierungsmöglichkeiten sind nötig, wenn man File oder Brettlisten
mit <PRE> ausgeben muß, Tabellen sind natürlich schöner, aber außer IBrowse
kann auf dem Amiga noch keiner Tabellen....
Auch sollte man bedenken, daß auf eine Steuersequenz kein '.', kein '-' und
keine Zahl folgen darf, wenn man damit keine Formatierung erreichen will.
Zugangsrechte auf die Bretter
-----------------------------
Grundsätzlich wird die Zugangsberechtigung wie bei einem Gast
vorgenommen, man kann allerdings einer IP-Adresse auch einem User
der Box zuordnen, indem man eine Env-Variable auf den Namen des
Users setzt.
setenv 192.168.10.2 Sysop
sorgt dafür, daß die Zugangsberechtigungen der IP 192.168.10.2 wie
für den User Sysop vorgenommen wird.
Wer Sliplogin anbietet, kann die Batchdateien StartSlip und StopSlip
um entsprechende setenv-Einträge erweitern.
Senden und Beantworten von Nachrichten
--------------------------------------
Beim Senden nimmt das das Script die Nachricht entgegen
und macht daraus einen ZC-Puffer, der dann vom Module
einsortiert wird; das bedeutet, daß bis auf weiteres nur
User etwas senden können die auch Point sind.
Kann der IP ein User der Box zugeordnet werden (setenv IP Username),
braucht der User nur Text und Betreff eingeben.
Ist die IP unbekannt, muß zusätzlich Username und Paßwort angegeben
werden.
Zum Senden und Antworten brauchen wir wieder ein paar .pre Dateien:
REPLY_HEADER.pre SEND_HEADER.pre
REPLY_GADSTART.pre SEND_GADSTART.pre
REPLY_PARENT.pre SEND_PARENT.pre
REPLY_ROOT.pre SEND_ROOT.pre
REPLY_FOOTER.pre SEND_FOOTER.pre
Funktionieren wie die anderen .pre Dateien auch...
SEND_OK.pre
REPLY_OK.pre
Werden angezeigt wenn das Senden erfolgreich war.
In $R erhält man eine Referenz auf den Brettinhalt, in den gesendet
wurde.
ERROR_HEADER.pre
ERROR_FOOTER.pre
.pre Dateien für Fehlermeldungen, zwischen den beiden wird ein Text
über den aufgetretenen Fehler eingefühgt, es gibt keine Referenz ($R).
- AmBoS-WWW-PM -
Ist genauso wie AmBoS-WWW zu verwenden, und stellt das Postfach
eines korrekt eingelockten User dar.
Der Verweis kann so aussehen : HREF="/cgi-bin/AmBoS-WWW-PM/"
- AmBoS-WWW-Antrag -
Bearbeitet einen Antrag, d.h. das Ergebnis eines Antragsformulares
(FORM) kann zur Bearbeitung an dieses Script geschickt werden.
Das Formular für den Antrag wird dabei vom Sysop erstellt, ein Bsp.
für ein solches Formular liegt den Archiv bei (CGITML/Antrag.html).
In dem Beispielformular muß die IP-Adresse hinter ACTION= in Zeile
14 angepasst werden.
Im Antragsformular sind die NAME= Einträge von größter Wichtigkeit,
und dürfen nicht geändert werden.
Ein Minmalformular muß Usernamen und Passwort enthalten.
Was noch alles fehlt
--------------------
Upload
wird es auch geben, nur leider erstmal nicht für Amiga User
da die vorhandenen Amiga-Browser diese Technik nicht
unterstützen. Nicht-Amiga-User werden eine Uploadmöglichkeit
haben.
Fehlermeldungen
gibt es noch keine... wenn was daneben läuft wird stumpf nichts
angezeigt.
Mime-Types
müßen auch noch eingebaut werden um eine korrekte Identifikation
durch den Browser beim ziehen von Files zu ermöglichen.
Desweiteren gibt es noch einen ganzen Haufen sinnvoller
Einstellungen die ein User vornehmen könnte... da bin ich mir aber
noch nicht ganz im klaren, wie ich das machen soll... aber auch das
wird sich finden...
Bekannte Probleme
-----------------
- Wer in Brettnamen '>' oder '<' verwendet hat, wird daran nicht viel
Freude haben da es sich bei den beiden Zeichen um wichtige
Steuerzeichen von HTML handelt.